package pe.edu.upla.lamerced.DAO.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import pe.edu.upla.lamerced.DAO.ServiciosDAO;
import pe.edu.upla.lamerced.bean.Detservicios;
import pe.edu.upla.lamerced.bean.Servicios;
import pe.edu.upla.lamerced.bean.Tipotarificacion;

@Repository
public class ServiciosDAOImpl extends HibernateDaoSupport implements ServiciosDAO {

	public ServiciosDAOImpl(){
		
	}
	@Autowired
	public ServiciosDAOImpl(SessionFactory sessionFactory){
		setHibernateTemplate( new HibernateTemplate(sessionFactory));
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Tipotarificacion> listaTipoTarificacion() {
		return this.getHibernateTemplate().find("from Tipotarificacion tt");
	}
	
	@Override
	public void registrarServicio(Servicios servicios) {
		this.getHibernateTemplate().saveOrUpdate(servicios);
	}
	@Override
	public Servicios obtenerServicio(Integer idservicios) {
		Query query = getSession().createQuery(" from Servicios s where idservicios = :id  ")
        .setInteger("id", idservicios);
		Servicios s = (Servicios)query.uniqueResult();
		return s;
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<Servicios> listaServicios() {
		return this.getHibernateTemplate().find("from Servicios s");
	}
	@Override
	public void registrarVentaServicio(Detservicios venta) {
		this.getHibernateTemplate().save(venta);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Detservicios> listarServicioHospedaje(Integer idhospedaje) {
		Query query = getSession().createQuery("select d from Detservicios d join fetch d.servicios where d.hospedaje= :idhospedaje ")
        .setInteger("idhospedaje", idhospedaje);		
		return query.list();
		
	}

}
